package com.mc.common.designpattern.signleton;

public class Singleton5 {
    //双重检查[推荐用]
    //Double-Check概念对于多线程开发者来说不会陌生，如代码中所示，
    // 我们进行了两次if (singleton == null)检查，这样就可以保证线程安全了。
    // 这样，实例化代码只用执行一次，后面再次访问时，判断if (singleton == null)，直接return实例化对象。
    private static Singleton5 SINGLETON_1;

    private Singleton5() {
    }

    public static synchronized Singleton5 getInstance() {

        if (SINGLETON_1 == null) {
            synchronized (Singleton5.class) {
                if (SINGLETON_1 == null) {
                    SINGLETON_1 = new Singleton5();
                }
            }
        }
        return SINGLETON_1;
    }
}
